package com.dc.refactoring._6_处理概括关系._8_ExtractInterface.newObject;

/**
 * Description: 员工为客户工作的时间表，从中可以计算客户应该支付的费用
 * @author: gdc
 * @date: 2020/12/13
 * @version 1.0
 */
public class TimeSheet {

    /**
     * 获取客户应该支付的费用
     *
     * 除了提供员工的级别和特殊技能外， Employee 还有其他的功能，但是，本应用只需要这两项功能。
     * 可以针对这两项功能定义一个接口，从而强调“我只需要这部分功能”的事实、
     */
    /*public double charge(Employee emp, int days) {
        int base = emp.getRate() * days;
        if (emp.hasSpecialSkill()) {
            return base * 1.05;
        } else {
            return base;
        }
    }*/

    // step 5 修改函数声明，强调该函数只使用 Employee 的部分行为
    public double charge(Billable emp, int days) {
        int base = emp.getRate() * days;
        if (emp.hasSpecialSkill()) {
            return base * 1.05;
        } else {
            return base;
        }
    }

}
